perm filename VERTI.SAI[PUB,TES] blob sn#129313 filedate 1974-11-07 generic text, type T, neo UTF8
00100	BEGOF("VERTI")
00200	
00300	COMMENT
00400	
00500	Skipping vertically down the page.  This is short now, but it is
00600	expected to grow with special features for high-resolution devices ;
00700	
00800	;
00900	
01000	PROCEDURES
     

00100	PUBLIC SIMPLE PROCEDURE VERTI! ;$"#
00200	BEGIN "VERTI!"
00300	SPREADM ← PREFMODE ;
00310	LEADNM ← LEADFM ← 0 ; TES 11/2/74 ;
00320	MLEADNM ← MLEADFM ← MSPREADM ← MILLVERTIDEFAULT ; TES 11/2/74 ;
00400	END "VERTI!" ;
     

00100	PUBLIC SIMPLE BOOLEAN PROCEDURE DIMENSIONED(INTEGER DEFAULT; REFERENCE INTEGER K) ;$"#
00200	BEGIN "DIMENSIONED"
00300	K ← CVD(E("0"+DEFAULT, NULL)) ;
00400	IF ITS(MILLS) OR ITS(MILL) THEN BEGIN PASS ; RETURN(TRUE) END ;
00500	IF ITS(INCHES) OR ITS(INCH) THEN BEGIN PASS ; K←1000*K ; RETURN(TRUE) END ;
00600	IF ITS(LINE) OR ITS(LINES) THEN PASS ;
00700	RETURN(FALSE) ;
00800	END "DIMENSIONED" ;
     

00100	PUBLIC SIMPLE PROCEDURE DPREFACE ;$"#
00200	BEGIN "DPREFACE" TES 11/2/74 ;
00300	INTEGER L, M ;
00400	DBREAK ;
00500	PASS ;
00600	IF NOT ON THEN BEGIN DIMENSIONED(0, L) ; RETURN END ;
00700	M ← ABS(MILLVERTI) ;
00750	IF DIMENSIONED(0, L) THEN BEGIN M ← L ; L ← 0 END ;
00800	IF NOFILL THEN BEGIN MLEADNM ← M ; LEADNM ← L END
00900	ELSE BEGIN MLEADFM ← M ; LEADFM ← L END ;
01000	END "DPREFACE" ;
     

00100	PUBLIC RECURSIVE PROCEDURE DSKIP(BOOLEAN GRPSKIP) ;$"#
00200	BEGIN
00300	BOOLEAN GM ;
00400	DBREAK ; PASS ;
00500	IF GRPSKIP THEN BEGIN GM←GROUPM ; GROUPM ←1 ; END ;
00600	IF ITS(TO) THEN
00700		BEGIN "SKIP TO"
00800		DAPART ; PASS ;
00900		IF ITS(COLUMN) THEN BEGIN PASS; TOCOLUMN(CVD(E(CVS(COL+1),NULL))) END
01000		ELSE BEGIN IF ITS(LINE) THEN PASS ; TOLINE(CVD(E("1", NULL))) END ;
01100		END "SKIP TO"
01200	ELSE	BEGIN
01250		IF THISTYPE>INTERNTYPE OR THISTYPE=-TERQ OR NEXTSCH(←) OR NEXTSCH(:) THEN
01300			SKIPLINES(1)
01310		ELSE IF DIMENSIONED(1, K) THEN
01315			BEGIN
01317			ASSUREAREA ;
01320			IF GRPSKIP THEN MILLGSKIP(AREAIXM) ← MILLGSKIP(AREAIXM) + K
01330			ELSE MILLSKIP(AREAIXM) ← MILLSKIP(AREAIXM) + K
01335			END
01340		ELSE SKIPLINES(K) ;
01370		END ;
01400	IF GRPSKIP AND GM = 0 THEN DAPART ;
01500	END "DSKIP" ;
     

00100	PUBLIC SIMPLE PROCEDURE DSPACING ;$"#
00200	BEGIN "DSPACING" TES 11/2/74 ;
00300	INTEGER L, M ;
00400	PASS ;
00500	IF NOT ON THEN BEGIN DIMENSIONED(0, L) ; RETURN END ;
00600	M ← ABS(MILLVERTI) ;
00650	IF DIMENSIONED(0, L) THEN BEGIN M ← L ; L ← 0 END ;
00700	MSPREADM ← M ;
00800	SPREADM ← L + 1 ;
00900	END "DSPACING" ;
     

00100	PUBLIC RECURSIVE PROCEDURE SKIPLINES(INTEGER HMLINES) ;$"#
00200	IF ON THEN
00300	BEGIN "SKIPLINES"
00400	ASSUREAREA ;
00500	IF HMLINES > 0 THEN
00600		IF GROUPM=0 THEN FIND!ROOM(-HMLINES, 0, COL, LINE, 0)
00700		ELSE	BEGIN "GROUP SKIP"
00800			INTEGER I ;
00900			FIND!ROOM(0, HMLINES, COL, LINE, 0) ;
01000			IF NOT GLINEM THEN GLINEM ← OLX + 1 ;
01050			IF COL>COLS AND LINE=0 THEN FTGP2 ← HMLINES  TES 11/2/74;
01087			ELSE
01093				BEGIN
01100				FOR I ← 1 THRU HMLINES DO AA[COL, LINE+I] ←
01200					NEWBLANK(IF GLINEM=0 AND I=1 THEN ABV ELSE ABV!BLW) ;
01300				LINE ← LINE + HMLINES ;
01350				END ;
01400			END "GROUP SKIP" ;
01500	END "SKIPLINES" ;
     

00100	PUBLIC RECURSIVE PROCEDURE TOLINE(INTEGER LINENO) ;$"#
00200	    IF ON THEN
00300		BEGIN "TOLINE"
00400		ASSUREAREA ;
00500		IF LINENO < LINE THEN
00600			IF COL = COLS THEN
00700				BEGIN NEXTPAGE ; IF LINENO>1 THEN OPENAREA(AREAIXM) END
00800			ELSE BEGIN COL ← COL+1 ; LINE ← 0 ; END ;
00900		IF LINENO=1 THEN LINE←1 ELSE FIND!ROOM(0, 0, COL, LINENO-1, 0) ;
01000		END "TOLINE" ;
     

00100	FINISHED
00200	
00300	ENDOF("VERTI")